package link

import (
	"fmt"
)

type Link struct{
	Data interface{}  // 数据是空接口，所以是通用类型
	Next *Link
}

// 头插法，p需要传指针，因为方法里需要改变p的值
// 但是p本身也是个指针，所以接收的类型是指针的指针
func (l *Link) AddNodeHead(data interface{}, p **Link){
	var node Link
	node.Data = data
	node.Next = (*p).Next
	(*p).Next = &node
}

// 尾插法
func (l *Link) AddNodeTail(data interface{}, p **Link){
	var node Link
	node.Data = data
	(*p).Next = &node
	(*p) = &node
}

// 遍历链表的方法，打印当前节点以及之后的所有的节点
func (l *Link) Trans(){
	for l != nil {
		fmt.Println(*l)
		l = l.Next
	}
}

